﻿Imports TransportadoraToledoBLL
Imports System.Windows.Forms

Public Class frm_cadastro_usuarios
    Public objBLL As New UsuariosBLL
    Public controle As String
    Public ultimo, primeiro, atual As Integer

    Sub limpar()
        tbcodigo.Text = ""
        cbAtivo.SelectedIndex = -1
        tbPesCodigo.Text = ""
        tbPesNome.Text = ""
        tbLogin.Text = ""
        tbSenha.Text = ""
        tbDataCadastro.Text = ""
    End Sub

    Sub carregaPropriedades()
        Try
            If (tbcodigo.Text = "") Then
                objBLL.pCodigo = 0
            Else : objBLL.pCodigo = tbcodigo.Text
            End If
            If cbAtivo.SelectedIndex = -1 Then
                Throw New Exception("Selecione o status do usuário.")
            ElseIf cbAtivo.SelectedIndex = 0 Then
                objBLL.pAtivo = True
            Else : objBLL.pAtivo = False
            End If
            If tbPesCodigo.Text = "" Then
                Throw New Exception("Pessoa não selecionada")
            Else : objBLL.pPessoa = tbPesCodigo.Text
            End If
            objBLL.pLogin = tbLogin.Text
            objBLL.pSenha = tbSenha.Text
        Catch ex As Exception
            Throw ex
        End Try
    End Sub

    Sub carregaCampos()
        Try
            tbcodigo.Text = objBLL.pCodigo
            tbDataCadastro.Text = objBLL.pData_cadastro
            tbLogin.Text = objBLL.pLogin
            tbSenha.Text = objBLL.pSenha
            If objBLL.pAtivo Then
                cbAtivo.SelectedIndex = 0
            Else : cbAtivo.SelectedIndex = 1
            End If
            tbPesCodigo.Text = objBLL.pPessoa
            tbPesNome.Text = objBLL.localizarPessoa(objBLL.pPessoa)
            carregaListaPermissao()
        Catch ex As Exception
            Throw ex
        End Try
    End Sub

    Sub carregaListaPermissao()
        Dim tab As New DataTable
        Dim frm As New frm_cadastro_permissao
        Try
            tab = objBLL.localizarPermissao(objBLL.pCodigo)
            lbPermissoes.Items.Clear()
            'For Each linha As DataRow In tab.Rows
            '    For Each obj As Control In frm.gbCadastros.Controls
            '        If obj.Name.Substring(2) = linha(2) Then
            '            lbPermissoes.Items.Add(obj.Text)
            '        End If
            '    Next
            'Next
            For Each linha As DataRow In tab.Rows
                For Each obj As Control In frm.Controls
                    If obj.Tag = linha(3) Then
                        lbPermissoes.Items.Add(obj.Text)
                    End If
                Next
            Next
        Catch ex As Exception
            Throw ex
        End Try
    End Sub

    Sub carregaPrimeiroUltimo()
        Try
            ultimo = objBLL.localizarPrimeiroUltimo("ultimo")
            primeiro = objBLL.localizarPrimeiroUltimo("primeiro")
            atual = ultimo
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Sub carregaUltimo()
        If (ultimo <> 0) Then
            objBLL.localizar(ultimo)
            If (objBLL.pCodigo <> 0) Then
                carregaCampos()
            End If
        End If
    End Sub
    Sub carregaPrimeiro()
        If (primeiro <> 0) Then
            objBLL.localizar(primeiro)
            If (objBLL.pCodigo <> 0) Then
                carregaCampos()
            End If
        End If
    End Sub

    Sub status(ByVal sta As Boolean)

        If (tbcodigo.Text = "" Or controle = "A") Then
            bIncluir.Enabled = sta

            bExcluir.Enabled = sta
            If (tbcodigo.Text = "") Then
                bAlterar.Enabled = False
                bVaPara.Enabled = False
                bPesquisar.Enabled = False
                bExcluir.Enabled = False
            Else
                bExcluir.Enabled = sta
                bPesquisar.Enabled = sta
                bAlterar.Enabled = sta
                bVaPara.Enabled = sta
            End If
            bCancelar.Enabled = Not sta
            bSalvar.Enabled = Not sta
            bPrimeiro.Enabled = sta
            bProximo.Enabled = sta
            bUltimo.Enabled = sta
            bAnterior.Enabled = sta
            gbConteudo.Enabled = Not sta
        Else
            bIncluir.Enabled = sta

            If (tbcodigo.Text = "") Then
                bExcluir.Enabled = False
                bAlterar.Enabled = False
                bVaPara.Enabled = False
                bPesquisar.Enabled = False
            Else
                bExcluir.Enabled = sta
                bAlterar.Enabled = sta
                bVaPara.Enabled = sta
                bPesquisar.Enabled = sta
            End If

            bCancelar.Enabled = Not sta
            bSalvar.Enabled = Not sta

            gbConteudo.Enabled = Not sta
        End If

        If (atual = primeiro And atual = ultimo) Then
            bProximo.Enabled = False
            bUltimo.Enabled = False
            bAnterior.Enabled = False
            bPrimeiro.Enabled = False
        ElseIf (atual = ultimo) Then
            bProximo.Enabled = False
            bUltimo.Enabled = False
            bAnterior.Enabled = True
            bPrimeiro.Enabled = True
        ElseIf (atual = primeiro) Then
            bProximo.Enabled = True
            bUltimo.Enabled = True
            bAnterior.Enabled = False
            bPrimeiro.Enabled = False
        Else
            bProximo.Enabled = True
            bUltimo.Enabled = True
            bAnterior.Enabled = True
            bPrimeiro.Enabled = True

        End If
    End Sub

    Private Sub bIncluir_Click(sender As System.Object, e As System.EventArgs) Handles bIncluir.Click
        limpar()
        controle = "I"
        status(False)
    End Sub

    Private Sub bAlterar_Click(sender As System.Object, e As System.EventArgs) Handles bAlterar.Click
        controle = "A"
        status(False)
    End Sub

    Private Sub bExcluir_Click(sender As System.Object, e As System.EventArgs) Handles bExcluir.Click
        Try
            If (MessageBox.Show("Deseja excluir?", "", MessageBoxButtons.YesNo) = DialogResult.Yes) Then
                carregaPropriedades()
                objBLL.excluirPermissao(objBLL.pCodigo)
                objBLL.excluir()
                MessageBox.Show("Excluido com sucesso!")
                limpar()
                carregaPrimeiroUltimo()
                carregaUltimo()
                status(True)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub bSalvar_Click(sender As System.Object, e As System.EventArgs) Handles bSalvar.Click
        Try
            carregaPropriedades()
            If (controle = "I") Then
                If objBLL.loginIgual(objBLL.pLogin) Then
                    Throw New Exception("Já existe um usuário com esse mesmo login cadastrado.")
                End If
                objBLL.inserir()
                MessageBox.Show("Incluido com sucesso!")
                limpar()
                carregaPrimeiroUltimo()
                carregaUltimo()
                status(True)
            Else
                objBLL.alterar()
                MessageBox.Show("Alterado com sucesso!")
                status(True)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub bCancelar_Click(sender As System.Object, e As System.EventArgs) Handles bCancelar.Click
        If (controle = "I") Then
            carregaPrimeiroUltimo()
            carregaUltimo()
        ElseIf (controle = "A") Then
            objBLL.localizar(atual)
            If (objBLL.pCodigo <> 0) Then
                carregaCampos()
                atual = objBLL.pCodigo
            End If
        End If
        controle = ""
        status(True)
    End Sub

    Private Sub bVaPara_Click(sender As System.Object, e As System.EventArgs) Handles bVaPara.Click
        Dim frm As New frm_VaPara("pessoa")
        frm.ShowDialog()
        If (frm.codigo <> 0) Then
            objBLL.localizar(frm.codigo)
            If (objBLL.pCodigo <> 0) Then
                carregaCampos()
                atual = objBLL.pCodigo
            Else
                MessageBox.Show("Registro Inexistente!")
                bVaPara_Click(sender, e)
            End If
        End If
        status(True)
        frm = Nothing
    End Sub

    Private Sub bPesquisar_Click(sender As System.Object, e As System.EventArgs) Handles bPesquisar.Click
        dgDados.DataSource = Nothing
        gbConsulta.Enabled = True
        gbConsulta.Visible = True
        bPesquisar.Enabled = False
        Me.Location = New System.Drawing.Point(Me.Location.X, Me.Location.Y - 127)
        Me.Size = New Size(729, 619)
    End Sub

    Private Sub bPrimeiro_Click(sender As System.Object, e As System.EventArgs) Handles bPrimeiro.Click
        carregaPrimeiro()
        atual = primeiro
        status(True)
    End Sub

    Private Sub bAnterior_Click(sender As System.Object, e As System.EventArgs) Handles bAnterior.Click
        Try
            Dim codigo As Integer = objBLL.localizarProxAnterior("anterior", atual)
            objBLL.localizar(codigo)
            If (objBLL.pCodigo <> 0) Then
                carregaCampos()
                atual = objBLL.pCodigo
            End If
            status(True)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub bProximo_Click(sender As System.Object, e As System.EventArgs) Handles bProximo.Click
        Try
            Dim codigo = objBLL.localizarProxAnterior("proximo", atual)
            objBLL.localizar(codigo)
            If (objBLL.pCodigo <> 0) Then
                carregaCampos()
                atual = objBLL.pCodigo
            End If
            status(True)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub bUltimo_Click(sender As System.Object, e As System.EventArgs) Handles bUltimo.Click
        carregaUltimo()
        atual = ultimo
        status(True)
    End Sub

    Private Sub bSair_Click(sender As System.Object, e As System.EventArgs) Handles bSair.Click
        Me.Close()
    End Sub

    Private Sub bPessoa_Click(sender As System.Object, e As System.EventArgs) Handles bPessoa.Click
        Try
            Dim frm As New frm_consultas
            frm.tipo = "pessoa"
            frm.ShowDialog()
            If (frm.codigo <> 0) Then
                tbPesCodigo.Text = frm.codigo
                tbPesNome.Text = frm.tipo
            End If
            frm = Nothing
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, "Erro")
        End Try
    End Sub

    Private Sub frm_cadastro_usuarios_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        carregaPrimeiroUltimo()
        carregaUltimo()
        bCancelar_Click(sender, e)
    End Sub

    Private Sub bClose_Click(sender As System.Object, e As System.EventArgs) Handles bClose.Click
        gbConsulta.Visible = False
        Me.Location = New System.Drawing.Point(Me.Location.X, Me.Location.Y + 127)
        Me.Size = New Size(720, 344)
        bPesquisar.Enabled = True
    End Sub

    Private Sub bFiltrar_Click(sender As System.Object, e As System.EventArgs) Handles bFiltrar.Click
        Try
            Dim campo As String = ""
            Select Case cbPesq.SelectedIndex
                Case -1 : Throw New Exception("Selecione o campo para pesquisa")
                Case 0 : campo = "p.pes_nome"
                Case 1 : campo = "u.usu_login"
            End Select
            If (tbconsulta.Text.Trim() = "") Then
                Throw New Exception("Nenhum valor para pesquisa")
            End If
            dgDados.DataSource = objBLL.localizar(campo, tbconsulta.Text)
            dgDados.Columns(0).HeaderText = "Nome"
            dgDados.Columns(0).Width = 280
            dgDados.Columns(1).Visible = False
            dgDados.Columns(2).Visible = False
            dgDados.Columns(3).HeaderText = "Login"
            dgDados.Columns(3).Width = 180
            dgDados.Columns(4).Visible = False
            dgDados.Columns(5).HeaderText = "Ativo"
            dgDados.Columns(5).Width = 50
            dgDados.Columns(6).HeaderText = "Data Cadastro"
            dgDados.Columns(6).Width = 80
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub dgDados_CellDoubleClick(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgDados.CellDoubleClick
        tbcodigo.Text = dgDados.Rows.Item(dgDados.SelectedRows(0).Index).Cells(1).Value
        tbPesCodigo.Text = dgDados.Rows.Item(dgDados.SelectedRows(0).Index).Cells(2).Value
        tbPesNome.Text = objBLL.localizarPessoa(Integer.Parse(tbPesCodigo.Text))
        tbLogin.Text = dgDados.Rows.Item(dgDados.SelectedRows(0).Index).Cells(3).Value
        tbSenha.Text = dgDados.Rows.Item(dgDados.SelectedRows(0).Index).Cells(4).Value
        If dgDados.Rows.Item(dgDados.SelectedRows(0).Index).Cells(5).Value = True Then
            cbAtivo.SelectedIndex = 0
        Else : cbAtivo.SelectedIndex = 1
        End If
        tbDataCadastro.Text = dgDados.Rows.Item(dgDados.SelectedRows(0).Index).Cells(6).Value
    End Sub

    Private Sub bPerAdd_Click(sender As System.Object, e As System.EventArgs) Handles bPerAdd.Click
        Try
            If tbcodigo.Text = "" Then
                Throw New Exception("Salve o usuário, depois altere para adicionar permissões.")
            End If
            Dim frm As New frm_cadastro_permissao
            frm.usu_codigo = objBLL.pCodigo
            frm.ShowDialog()
            carregaListaPermissao()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
        
    End Sub

    Private Sub bAjuda_Click(sender As System.Object, e As System.EventArgs) Handles bAjuda.Click
        Try
            Dim Ajuda As String
            Ajuda = Application.StartupPath
            Ajuda = Ajuda.Replace("\bin\Debug", "\Arquivo de Ajuda\index.html#cadastroUsuarios")
            Dim Ie As Object
            Ie = CreateObject("InternetExplorer.Application")
            Ie.Visible = True
            Ie.Navigate(Ajuda)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
End Class